/**
 * 
 */
package com.ibm.framework.exception.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ibm.framework.exception.BaseException;
import com.ibm.framework.exception.ExceptionType;

/**
 * 通用异常处理器
 * 
 * @author v_wangchun
 * */
public class GenericExceptionHandler {

    /**
     * logger
     */
    private static Logger logger = LoggerFactory.getLogger("saic_exception_log");

    /**
     * 构造方法
     */
    public GenericExceptionHandler() {
        // TODO Auto-generated constructor stub
    }

    /**
     * 异常处理方法，将异常包装成BaseException
     * 
     * @param ex 异常信息
     * @param et 异常类型
     * @param isLog 是否打印日志
     */
    public void handle(Exception ex, ExceptionType et, boolean isLog) {

        if (!isLog) {
            if (ex instanceof BaseException) {
                throw (BaseException) ex;
            } else {
                throw new BaseException(et.getCode(), ex, new Object[] { et.getDesc() }, et);
            }
        } else {
            logger.error(et.getDesc(), ex);
        }

    }

}
